import { getAppInfoByAppName, getAppPageList } from '@/services/apps';

export default {
  namespace: 'apps', // 命名空间名字，必填
  state: {
    appInfo: {},
  },
  // reducers:同步处理
  reducers: {
    save({ state }, { payload }) {
      console.log(payload);
      return { ...state, ...payload };
    },
  },
  // 所有的redux中的异步操作,与后台交互 Effect 被称为副作用，在我们的应用中，
  //最常见的就是异步操作。它来自于函数编程的概念，之所以叫副作用是因为它使得我们的函数变得不纯，同样的输入不一定获得同样的输出
  effects: {
    // 此处的redux集成了插件redux-saga来对action和reducers做处理
    // getAppInfoByAppName表示加载数据 payload是传来的参数，是个对象，如果没参数可以写成{_,{call,put,select}}
    *getAppInfoByAppName({ payload }, { call, put }) {
      console.log('页面触发了异步操作');
      // service是引入service层那个js的一个名字，payload是后台要求传的参数，json就是后台返回来的数据
      // call用来调用接口 获取数据
      console.log(payload);
      const json = yield call(getAppInfoByAppName, { payload });
      console.log(json);
      // put 用来派发action,是redux-saga中的一个方法
      // 此种写法是es6中generate生成器函数
      // 这就是reducer中addNum方法, put就是用来触发上面reducer的方法，payload里就是传过去的参数。
      // 同时它也能触发同等级effects中其他方法。
      // modelsTypeList 是返回的数据
      yield put({
        type: 'save',
        payload: {
          appInfo: json,
        },
      });
    },
  },
  //Subscription 语义是订阅，用于订阅一个数据源，然后根据条件 dispatch 需要的 action。
  //数据源可以是当前的时间、服务器的 websocket 连接、keyboard 输入、geolocation 变化、history 路由变化等等。
  subscriptions: {},
};
